home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 5 / Apprentice-Release5.iso / Source Code / Libraries / DCLAP 6d / dclap6d / network / ncsasock / sock_ext.h < prev    next >
Text File  |  1996-07-05  |  5KB  |  164 lines

  1. /*
  2.  * BSD-style socket emulation library for the Mac
  3.  * Original author: Tom Milligan
  4.  * Current author: Charlie Reiman - creiman@ncsa.uiuc.edu
  5.  *
  6.  * This source file is placed in the public domian.
  7.  * Any resemblance to NCSA Telnet, living or dead, is purely coincidental.
  8.  *
  9.  *      National Center for Supercomputing Applications
  10.  *      152 Computing Applications Building
  11.  *      605 E. Springfield Ave.
  12.  *      Champaign, IL  61820
  13.  */
  14.  
  15. /*
  16.  * External definitions for socket users.
  17.  * Charlie Reiman
  18.  * Friday, August 3, 1990 2:09:45 PM
  19.  */
  20.  
  21. #ifndef __socket_ext__
  22. #define __socket_ext__
  23.  
  24. #ifndef __MEMORY__
  25. #include <Memory.h>
  26. #endif  __MEMORY__
  27.  
  28. #ifndef _TYPES_
  29. #include <s_types.h>
  30. #endif  _TYPES_
  31.  
  32. #ifndef ipBadLapErr
  33. #include <MacTCPCommonTypes.h>
  34. #endif
  35.  
  36.  
  37. #ifndef SOCK_STATE_NO_STREAM
  38.  
  39.  
  40.  
  41. typedef enum spin_msg
  42.     {
  43.     SP_MISC,            /* some weird thing, usually just return immediately if you get this */
  44.     SP_SELECT,            /* in a select call */
  45.     SP_NAME,            /* getting a host by name */
  46.     SP_ADDR,            /* getting a host by address */
  47.     SP_TCP_READ,        /* TCP read call */
  48.     SP_TCP_WRITE,        /* TCP write call */
  49.     SP_UDP_READ,        /* UDP read call */
  50.     SP_UDP_WRITE,        /* UDP write call */
  51.     SP_SLEEP            /* sleeping, passes ticks left to sleep */
  52.     } spin_msg;
  53.     
  54. typedef int (*SpinFn)(spin_msg msg,long param);
  55.     
  56. /*
  57.  * You spin routine should look like this:
  58.  *
  59.  * void myspin(spin_msg aMsg,long data)
  60.  *    {
  61.  *    switch (aMsg)
  62.  *    ...
  63.  *    }
  64.  *
  65.  * The data param is only defined for TCP read and write. 
  66.  * For TCP reads:
  67.  *  Nubmer of bytes left to read in.
  68.  * For TCP writes:
  69.  *  Number of bytes left to write. Note that this may be 0 for writes once all
  70.  *  the necessary writes are queued up and the library is simply waiting for
  71.  *  them to finish.
  72.  */
  73.  
  74.  /*
  75.   * High level prototypes.
  76.   */
  77.   
  78. #ifdef __cplusplus
  79. extern "C" {
  80. #endif
  81.  
  82. /* Socket.c */
  83.  
  84. int s_socket(Int4 domain, Int4 type, short protocol);
  85. int s_bind(Int4 s, struct sockaddr *name, Int4 namelen);
  86. int s_connect(Int4 s, struct sockaddr *addr, Int4 addrlen);
  87. int s_listen(Int4 s, Int4 qlen);
  88. int s_accept(Int4 s, struct sockaddr *addr, Int4 *addrlen);
  89. int s_accept_once(Int4 s, struct sockaddr *addr, Int4 *addrlen);
  90. int s_close(Int4 s);
  91. int s_read(Int4 s, void *buffer, Int4 buflen);
  92. int s_recv(Int4 s, void *buffer, Int4 buflen, Int4 flags);
  93. int s_recvfrom(Int4 s, void *buffer, Int4 buflen, Int4 flags, struct sockaddr *sa_from, Int4 *fromlen);
  94. int s_write(Int4 s, void *buffer, Int4 buflen);
  95. int s_writev(Int4 s, struct iovec *iov, Int4 count);
  96. int s_send(Int4 s, void *buffer, Int4 buflen, Int4 flags);
  97. int s_sendto (Int4 s, void *buffer, Int4 buflen, Int4 flags, struct sockaddr *to, Int4 tolen);
  98. int s_sendmsg(Int4 s,struct msghdr *msg,Int4 flags);
  99. int s_really_send(Int4 s, void *buffer, Int4 count, Int4 flags, struct sockaddr_in *to);
  100. int s_select(Int4 width, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);
  101. int s_getdtablesize(void);
  102. int s_getsockname(Int4 s, struct sockaddr *name, Int4 *namelen);
  103. int s_getpeername(Int4 s, struct sockaddr *name, Int4 *namelen);
  104. int s_shutdown(Int4 s, Int4 how);
  105. /* int s_fcntl(Int4 s, Int4 cmd, Int4 arg); */
  106. int s_fcntl(Int4 s, unsigned long cmd, Int4 arg);
  107. int s_dup(Int4 s);
  108. int s_dup2(Int4 s, Int4 s1);
  109. int s_ioctl(Int4 d, Int4 request, Int4 *argp);  /* argp is really a caddr_t */
  110. int s_setsockopt(Int4 s, Int4 level, Int4 optname, char *optval, Int4 optlen);
  111. int s_setspin(SpinFn routine);
  112. SpinFn s_getspin(void);
  113.  
  114. /* Socket.stdio.c */
  115.  
  116. /**** GONE ****/
  117. #if 0
  118. Ptr s_fdopen(int fd, char *type);
  119. int s_fileno(SocketPtr sp);
  120. int s_fgetc(SocketPtr sp);
  121. int s_ungetc(char c, SocketPtr sp);
  122. int s_fread(char *buffer, int size, int nitems, SocketPtr sp);
  123. int s_fputc(char c, SocketPtr sp);
  124. int s_fprintf(SocketPtr sp, char *fmt, ...);
  125. int s_fwrite(char *buffer, int size, int nitems, SocketPtr sp);
  126. int s_fflush(SocketPtr sp);
  127. int s_fclose(SocketPtr sp);
  128. int s_ferror(SocketPtr sp);
  129. int s_feof(SocketPtr sp);
  130. int s_clearerr(SocketPtr sp);
  131. #endif
  132.  
  133. /**** unGONE ****/
  134.  
  135. /* netdb.c */
  136.  
  137. #ifndef SOCK_DEFS_ONLY
  138.  
  139. #ifdef DONT_DEFINE_INET
  140. typedef unsigned long ip_addr;
  141. #endif /* DONT_DEFINE_INET */
  142.  
  143. struct hostent *gethostbyname(char *name);
  144.  
  145. /*struct hostent *gethostbyaddr(ip_addr *addrP,Int4 len,Int4 type);*/
  146. struct hostent    *gethostbyaddr(long *addrP,Int4 len,Int4 type);
  147. #ifndef DONT_DEFINE_INET
  148. char *inet_ntoa(ip_addr inaddr);
  149. /* ip_addr inet_addr(char *address); */
  150. extern unsigned long inet_addr(const char *address);
  151. #endif /* DONT_DEFINE_INET */
  152.  
  153. #endif /* SOCK_DEFS_ONLY */
  154.  
  155. #ifdef __cplusplus
  156. }
  157. #endif
  158.  
  159. /* FOLLOWING LINE ADDED FOR THINKC -- JAE 03/20/92 */
  160.  
  161.  
  162. #endif /* SOCK_STATE_NO_STREAM */
  163. #endif  __socket_ext__
  164.